/**
 * @example Associations and Validations
 *
 * This example demonstrates associations and validations on a {@link Ext.data.Model}.
 * See console for output.
 */

	// define the User model
//	Ext.define('User999', 
//	{
//	    extend: 'Ext.data.Model',
//		config: 
//		{
//			fields: ['id', 'name', 'age', 'gender'],
//		    validations: [
//		        {type: 'presence', name: 'name'},
//		        {type: 'length',   name: 'name', min: 5},
//		        {type: 'format',   name: 'age', matcher: /\d+/},
//		        {type: 'inclusion', name: 'gender', list: ['male', 'female']},
//		        {type: 'exclusion', name: 'name', list: ['admin']}
//		    ],
//		    proxy: {
//		        type: 'ajax',
//		        url : 'data/users',
//		        reader: {
//		            type: 'json',
//					rootProperty: 'ooxx'
//		        }
//		    },
//		    hasMany: 'Post' // shorthand for {model: 'Post', name: 'posts'}
//		}
//	
//	});
//
//	//define the Post model
//	Ext.define('Post', 
//	{
//	    extend: 'Ext.data.Model',
//		config:
//		{
//			fields: ['id', 'user_id', 'title', 'body'],
//		    proxy: {
//		        type: 'rest',
//		        url : 'data/posts',
//		        reader: {
//		            type: 'json',
//		            root: 'posts'
//		        }
//		    },
//		    belongsTo: 'User',
//		    hasMany: {model: 'Comment', name: 'comments'}
//		}
//	});
//	
//	//define the Comment model
//	Ext.define('Comment', 
//	{
//	    extend: 'Ext.data.Model',
//		config: 
//		{
//			fields: ['id', 'post_id', 'name', 'message'],
//	    	belongsTo: 'Post'
//		}
//	});


	Ext.define('User', 
	{
	    extend: 'Ext.data.Model',
	    config: {
	        fields: ['id', 'name', 'email', 'method'],
			proxy: {
		        type: 'rest',
//		        url: '/moxprj/public/ajax/get/md/user/fn/get',
url: '/moxprj/public',
				reader: {
					type: 'json',
					rootProperty: 'ooxx'
				}
		    },
//			hasMany: { model: 'Post', name: 'posts' }
	    }

	});
	
	Ext.define('Post', 
	{
		extend: 'Ext.data.Model',
		config: {
			fields: ['id', 'user_id', 'title', 'body'],
			proxy: {
				type: 'ajax',
				url: '/moxprj/public/ajax/get/md/post/fn/get',
				reader: {
					type: 'json',
					rootProperty: 'ooxx'
				}
			},
//			belongsTo: 'userModel'			
		}
	});
	
	Ext.require('Ext.data.Store');
	
	Ext.onReady(function()
	{

//		var store = Ext.create('Ext.data.Store', {
//		    model: 'User'
//		});
//		
//		store.load(function(records, operation, success)
//		{
//			console.log(records);
//		});
		
//		userModel.load(7, {
//			success: function(record, operation){
//				console.log(record);
//			},
//			failure: function(record, operation) {
//				console.log('error');
//			}
//		});

	    // Loads User with ID 1 and related posts and comments using User's Proxy
//	    User.load(1, 
//		{
//	        success: function(user)
//			{
//	            console.log("User: " + user.get('name'));
//	
//	            // loop through the user's posts and print out the comments
//	            user.posts().each(function(post) {
//	                console.log("Comments for post: " + post.get('title'));
//	
//	                post.comments().each(function(comment) {
//	                    console.log(comment.get('message'));
//	                });
//	
//	                // get the user reference from the post's belongsTo association
//	                post.getUser(function(user) {
//	                    console.log('Just got the user reference from the post: ' + user.get('name'))
//	                });
//	
//	                // try to change the post's user
//	                post.setUser(100, {
//	                    callback: function(product, operation) {
//	                        if (operation.wasSuccessful()) {
//	                            console.log('Post\'s user was updated');
//	                        } else {
//	                            console.log('Post\'s user could not be updated');
//	                        }
//	                    }
//	                });
//	
//	            });
//	
//	            // create a new post
//	            user.posts().add({
//	                title: 'Ext JS 4.0 MVC Architecture',
//	                body: 'It\'s a great Idea to structure your Ext JS Applications using the built in MVC Architecture...'
//	            });
//	
//	            // save the new post
//	            user.posts().sync();
//	        }
//	    });
//	
//	    // now lets try to create a new user with as many validation errors as we can
//	    var newUser = Ext.create('User', {
//	        name: 'admin',
//	        age: 'twenty-nine',
//	        gender: 'not a valid gender'
//	    });
//	
//	    // run some validation on the new user we just created
//	    var errors = newUser.validate();
//	
//	    console.log('Is User valid?', errors.isValid()); //returns 'false' as there were validation errors
//	    console.log('All Errors:', errors.items); //returns the array of all errors found on this model instance
//	    console.log('Age Errors:', errors.getByField('age')); //returns the errors for the age field
	
	});
